package cn.itcast.nems.oldems.api;

import cn.itcast.ic.common.bean.Page;
import cn.itcast.nems.common.BasePageRequest;
import cn.itcast.nems.oldems.dto.*;

import java.util.List;
import java.util.Set;

public interface StudentApi {


    
    /**
     * <p>
     * 查询学生归属老师  
     * </p>
     *
     * @param studentIds 学生ID
     * @author zhouwei
     * @since 2024/4/12 4:36 PM
     **/
    List<StudentBelongerDTO> queryStudentBelongerByIds (Set<Integer> studentIds ) ;
    /**
     * <p>
     * 根据学号查询班级合同列表
     * </p>
     *
     * @param studentNos 学号
     * @author zhouwei
     * @since 2024/4/12 4:36 PM
     **/
    List<StudentClazzInfoDTO> queryClazzListByStudentNos(Set<String> studentNos) ;
    /**
     * <p>
     * 根据学员ID查询学员详情
     * </p>
     *
     * @author zhouwei
     * @since 2024/3/12 6:29 PM
     **/
    List<StudentInfoDTO> queryStudentListByIds(Set<Integer> studentIds ,String keyword) ;
    
    /**
     * <p>
     * 根据学生ID查询合同详情
     * </p>
     *
     * @author zhouwei
     * @since 2024/3/12 4:00 PM
     **/
    List<ContractInfoDTO> findListByStudentIds (Set<Integer> studentIds) ;

    StudentBasicInfoDto studentInfoById(Integer id);

    StudentDto findById(Integer id);

    /**
     * 根据订单ID查询学学员
     *
     * @param studentOrderId ems订单ID
     * @return 学员ID
     */
    StudentDto findByStudentOrderId(String studentOrderId);

    int setStudentCurrentAddress(Integer id, String currentAddress);

    Page<StudentListDto> page(BasePageRequest<StudentDataQueryDto> pageRequest);

    List<StudentListDto> list(StudentDataQueryDto query);

    Boolean update(StudentBasicInfoDto vo);
    /**
     * <p>
     * 根据学籍ID查询班级信息
     * </p>
     *
     * @param studentId 学生ID
     * @param clazzId 班级ID
     * @param contractNumber 合同编号
     * @author zhouwei
     * @since 2024/3/11 3:56 PM
     **/
    List<ContractInfoDTO> findContractClazzByStudentIdAndClazzId(Integer studentId ,Integer clazzId ,String contractNumber);

    /**
     * 根据学员ID获取班级签订详情
     * @param studentId 学员ID
     * @return 班级签订列表， 为空返回null
     */
    List<ContractInfoDTO> findClassContractInfoByStudentId(Integer studentId) ;

    List<StudentListDto> mergeToList(int studentId);
}
